package cc.autoapi.pucong.auto.flow.core.flow.execNode.task;


import cc.autoapi.pucong.auto.flow.core.flow.execNode.entity.node.TaskNode;

import java.util.List;
import java.util.concurrent.Callable;

/**
 * @description:
 * @author: cong.pu
 * @create: 2024-09-29 10:09
 **/
public interface InterfaceTask<T> extends Callable<T> {

    /**
     * 前置执行
     *
     * @return
     */
    default void preHandle() {
    }

    /**
     * 后置执行
     *
     * @return
     */
    default void afterHandle() {
    }

    /**
     * 执行
     *
     * @return
     */
    void handle();


    /**
     * 过滤通知的下一执行节点
     *
     * @param nextNodeList
     * @return
     */
    default List<TaskNode> fitterNextPublishNode(List<TaskNode> nextNodeList) {
        return nextNodeList;
    }
}
